requirejs.config({
    "paths": {
        "jquery": "https://code.jquery.com/jquery-1.11.3.min",
        "moment": "../../moment",
        "daterangepicker": "../../daterangepicker"
    }
});

requirejs(['jquery', 'moment', 'daterangepicker'], function ($, moment) {
    $(document).ready(function () {

        $('#config-text').keyup(function () {
            eval($(this).val());
        });

        $('.configurator input, .configurator select').change(function () {
            updateConfig();
        });

        $('.demo i').click(function () {
            $(this).parent().find('input').click();
        });

        $('#startDate').daterangepicker({
            singleDatePicker: true,
            startDate: moment().subtract(6, 'days')
        });

        $('#endDate').daterangepicker({
            singleDatePicker: true,
            startDate: moment()
        });

        updateConfig();

        function updateConfig() {
            var options = {};

            if ($('#singleDatePicker').is(':checked'))
                options.singleDatePicker = true;

            if ($('#showDropdowns').is(':checked'))
                options.showDropdowns = true;

            if ($('#showWeekNumbers').is(':checked'))
                options.showWeekNumbers = true;

            if ($('#showISOWeekNumbers').is(':checked'))
                options.showISOWeekNumbers = true;

            if ($('#timePicker').is(':checked'))
                options.timePicker = true;

            if ($('#timePicker24Hour').is(':checked'))
                options.timePicker24Hour = true;

            if ($('#timePickerIncrement').val().length && $('#timePickerIncrement').val() != 1)
                options.timePickerIncrement = parseInt($('#timePickerIncrement').val(), 10);

            if ($('#timePickerSeconds').is(':checked'))
                options.timePickerSeconds = true;

            if ($('#autoApply').is(':checked'))
                options.autoApply = true;

            if ($('#dateLimit').is(':checked'))
                options.dateLimit = { days: 7 };

            if ($('#ranges').is(':checked')) {
                options.ranges = {
                    'Today': [moment(), moment()],
                    'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
                    'Last 7 Days': [moment().subtract(6, 'days'), moment()],
                    'Last 30 Days': [moment().subtract(29, 'days'), moment()],
                    'This Month': [moment().startOf('month'), moment().endOf('month')],
                    'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]
                };
            }

            if ($('#locale').is(':checked')) {
                options.locale = {
                    format: 'MM/DD/YYYY HH:mm',
                    separator: ' - ',
                    applyLabel: 'Apply',
                    cancelLabel: 'Cancel',
                    fromLabel: 'From',
                    toLabel: 'To',
                    customRangeLabel: 'Custom',
                    daysOfWeek: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],
                    monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
                    firstDay: 1
                };
            }

            if (!$('#linkedCalendars').is(':checked'))
                options.linkedCalendars = false;

            if (!$('#autoUpdateInput').is(':checked'))
                options.autoUpdateInput = false;

            if ($('#alwaysShowCalendars').is(':checked'))
                options.alwaysShowCalendars = true;

            if ($('#parentEl').val().length)
                options.parentEl = $('#parentEl').val();

            if ($('#startDate').val().length)
                options.startDate = $('#startDate').val();

            if ($('#endDate').val().length)
                options.endDate = $('#endDate').val();

            if ($('#minDate').val().length)
                options.minDate = $('#minDate').val();

            if ($('#maxDate').val().length)
                options.maxDate = $('#maxDate').val();

            if ($('#opens').val().length && $('#opens').val() != 'right')
                options.opens = $('#opens').val();

            if ($('#drops').val().length && $('#drops').val() != 'down')
                options.drops = $('#drops').val();

            if ($('#buttonClasses').val().length && $('#buttonClasses').val() != 'btn btn-sm')
                options.buttonClasses = $('#buttonClasses').val();

            if ($('#applyClass').val().length && $('#applyClass').val() != 'btn-success')
                options.applyClass = $('#applyClass').val();

            if ($('#cancelClass').val().length && $('#cancelClass').val() != 'btn-default')
                options.cancelClass = $('#cancelClass').val();

            $('#config-text').val("$('#demo').daterangepicker(" + JSON.stringify(options, null, '    ') + ", function(start, end, label) {\n  console.log(\"New date range selected: ' + start.format('YYYY-MM-DD') + ' to ' + end.format('YYYY-MM-DD') + ' (predefined range: ' + label + ')\");\n});");

            $('#config-demo').daterangepicker(options, function (start, end, label) { console.log('New date range selected: ' + start.format('YYYY-MM-DD') + ' to ' + end.format('YYYY-MM-DD') + ' (predefined range: ' + label + ')'); });

        }

    });
});
